#ifndef CANVAS_H
#define CANVAS_H

#include "mid/input/input.h"
#include "mid/widgets/widget.h"

enum eWidgetType
{
    eWT_Label = 0,
    eWT_Line,
    eWT_Curve,
    eWT_Button,
};

typedef enum eWindow
{
    eWIN_HOME = 0,
    eWIN_FIX_SPEED,
    eWIN_FIX_DISTANCE,
    eWIN_MAX,
} eWindow;

typedef void (*FuncInit)();
typedef void (*FuncRender)();
typedef void (*FuncUpdate)();
typedef int (*FuncProcessInput)(eButtonID btnID, eButtonEvent btnEvent);

typedef void (*FuncEnterWindow)(eWindow eWin);
typedef void (*FuncBack)();

typedef struct Window_t
{
    FuncRender Render;
    FuncUpdate Update;
    FuncProcessInput ProcessInput;

    WidgetList widgetList;
} Window;

Window* GetMainWindow();
Window* GetFixedSpeedWindow();
Window* GetFixedDistanceWindow();

#endif // CANVAS_H